package com.zengdada.authority.utils;

import com.zengdada.authority.config.listener.ApplicationReadyEventListener;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.List;

/**
 * @Auther: 12614
 * @Contact: 1261438511@qq.com
 * @Date: 2018/11/20 18:26
 * @Description:
 */
public class MultipartFileUtils {

    /**
     * 保存文件
     *
     * @param file         文件
     * @param fileSuffixs  后缀过滤 null 不过滤
     * @param relativePath 相对路径 （相对于项目所在目录的父目录 webapp）
     * @return 文件名
     * @throws Exception
     */
    public static String saveFileToRelativePath(MultipartFile file, List<String> fileSuffixs, String relativePath) throws Exception {
        String path = ApplicationReadyEventListener.getRootPath() + relativePath;
        return saveFile(file, fileSuffixs, path);
    }

    /**
     * @param file        文件
     * @param fileSuffixs 后缀过滤 null 不过滤
     * @param path        文件绝对路径
     * @return 文件名
     * @throws Exception
     */
    public static String saveFile(MultipartFile file, List<String> fileSuffixs, String path) throws Exception {
        String name = file.getOriginalFilename().toLowerCase();
        String suffix = name.substring(name.lastIndexOf(".") + 1, name.length());
        if (fileSuffixs != null && !fileSuffixs.contains(suffix))
            throw new Exception("文件类型不被允许！！");
        File nfile = new File(path, String.format("%s_%s.%s", name.substring(0, name.lastIndexOf(suffix) - 1), String.valueOf(Math.random()).substring(2, 8), suffix));
        if (!nfile.getParentFile().exists()) nfile.getParentFile().mkdirs();
        if (nfile.exists()) nfile.delete();
        nfile.createNewFile();
        file.transferTo(nfile);
        return nfile.getName();
    }


}
